﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLTV_V2.BussinessLogic;
using QLTV_V2.BussinessObject;
using QLTV_V2.DataAccess;

namespace QLTV_V2
{
    public partial class Frm_QTNSD :DevComponents.DotNetBar.Office2007RibbonForm
    {
        public Frm_QTNSD()
        {
            InitializeComponent();
        }
        private int kt;
        private string maNV;
        NhanVien nv = new NhanVien();
        DanhMucBUS dmBUS = new DanhMucBUS();
        Utilities uti = new Utilities();
        private void Frm_QTNSD_Load(object sender, EventArgs e)
        {
            try
            {
                //Load combox gioi tinh
                comb_GioiTinh.ResetText();
                comb_GioiTinh.Items.Add("Nam");
                comb_GioiTinh.Items.Add("Nữ");
                comb_GioiTinh.SelectedItem = "Nam";
                //
                dgv_NSD.DataSource = dmBUS.getDSNhanVien();
                //
                loadStatus(true);
                loadButton(false);
                btn_Them.Enabled = true;
                btn_Sua.Enabled = true;
                btn_Xoa.Enabled = true;
                //
                int k = dgv_NSD.CurrentCell.RowIndex + 1;
                int dem = dgv_NSD.Rows.Count - 1;
                lbl_Show.Text = k.ToString() + " / " + dem.ToString();
            }
            catch
            { 
            
            }
        }

        #region Button
        private void btn_Them_Click(object sender, EventArgs e)
        {
            kt = 1;
            btn_Sua.Enabled = false;
            btn_Xoa.Enabled = false;
            loadButton(true);
            loadStatus(false);
            resetTextBox();
        }

        private void btn_Sua_Click(object sender, EventArgs e)
        {
            kt = 2;
            maNV = txt_MaNV.Text;
            btn_Them.Enabled = false;
            btn_Xoa.Enabled = false;
            loadButton(true);
            loadStatus(false);
        }

        private void btn_Xoa_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("Bạn có muốn xóa " + txt_MaNV.Text + " không?", "Hỏi",
      MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    if (uti.deleteTable("NhanVien", "MaNV", txt_MaNV.Text) == true)
                    {
                        MessageBox.Show("Đã xóa");
                        Frm_QTNSD_Load(sender, e);
                    }
                    else
                        MessageBox.Show("Không thể xóa");
                }
            }
            catch {
                MessageBox.Show("Không thể xóa do mã nhân viên đang tồn tại trng CSDL");
            }
        }

        private void btn_Upload_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "All File (*.*)|*.*|JPG Files(*.JPG)|*.JPG | GIF Files(*.GIF)|*.GIF";
            if (ofd.ShowDialog(this) == DialogResult.OK)
            {
                pic_AnhCaNhan.Image = Image.FromFile(ofd.FileName);
                string filename = ofd.FileName;
                txt_LinkAnh.Text = filename.ToString();
            }
        }

        private void btn_Luu_Click_1(object sender, EventArgs e)
        {
            int temp = kt;
            //Luu anh
            string img = txt_LinkAnh.Text.Substring(txt_LinkAnh.Text.LastIndexOf('\\') + 1);
            if (img != "")
            {
                try
                {
                    pic_AnhCaNhan.Image.Save(Application.StartupPath + @"\Images\Users\" + img);
                }
                catch
                {

                }
            }
            nv = getTTNhanVien();
            if (checkSave(nv) == true)
            {
                if (kt == 1)//Thêm nhân viên
                {
                    if (uti.CheckExitsValue("NhanVien", "MaNV", nv.MaNV) == true)
                    {
                        if (dmBUS.InsertNhanVien(nv) == true)
                            Frm_QTNSD_Load(sender, e);
                        else
                            MessageBox.Show("Không thể thêm","Lỗi");
                    }
                    else
                    {
                        MessageBox.Show("Mã nhân viên" + nv.MaNV + " đã tồn tại !","Thông báo");
                        kt = temp;
                    }
                }
                else //sửa thông tin
                {
                    if (nv.MaNV != maNV)
                    {
                        if (uti.CheckExitsValue("NhanVien", "MaNV", nv.MaNV) == true)
                        {
                            if (dmBUS.UpdateNhanVien(maNV, nv) == true)
                                Frm_QTNSD_Load(sender, e);
                            else
                                MessageBox.Show("Không thể lưu","Lỗi");
                        }
                        else
                        {
                            MessageBox.Show("Mã nhân viên" + nv.MaNV + " đã tồn tại !","Thông báo");
                            kt = temp;
                        }
                    }
                    else
                    {
                        if (dmBUS.UpdateNhanVien(maNV, nv) == true)
                        {
                            dgv_NSD.DataSource = dmBUS.getDSNhanVien();
                            Frm_QTNSD_Load(sender, e);
                        }
                        else
                        {
                            MessageBox.Show("Không thể lưu", "Lỗi");
                            Frm_QTNSD_Load(sender, e);
                        }
                    }
                }
            }
        }

        private void btn_Huy_Click(object sender, EventArgs e)
        {
            Frm_QTNSD_Load(sender, e);
        }

        private void btn_Left_end_Click(object sender, EventArgs e)
        {
            int dem = dgv_NSD.Rows.Count - 1;
            dgv_NSD.CurrentCell = dgv_NSD.Rows[0].Cells[0];
            lbl_Show.Text = "1 / " + dem.ToString();
        }

        private void btn_Left_Click(object sender, EventArgs e)
        {
            try
            {
                int k = dgv_NSD.CurrentCell.RowIndex;
                int dem = dgv_NSD.Rows.Count - 1;
                dgv_NSD.CurrentCell = dgv_NSD.Rows[k - 1].Cells[0];
                lbl_Show.Text = k + " / " + dem.ToString();
            }
            catch
            {
                lbl_Show.Text = "1 / " + (dgv_NSD.Rows.Count - 1).ToString();
            }
        }

        private void btn_Right_Click(object sender, EventArgs e)
        {
            try
            {
                int k = dgv_NSD.CurrentCell.RowIndex;
                int dem = dgv_NSD.Rows.Count - 1;
                dgv_NSD.CurrentCell = dgv_NSD.Rows[k + 1].Cells[0];
                lbl_Show.Text = (k + 2) + " / " + dem.ToString();
            }
            catch
            {
                string k = (dgv_NSD.Rows.Count - 1).ToString();
                lbl_Show.Text = k + " / " + k;
            }
        }

        private void btn_Right_Left_Click(object sender, EventArgs e)
        {
            int dem = dgv_NSD.Rows.Count - 1;
            dgv_NSD.CurrentCell = dgv_NSD.Rows[dem - 1].Cells[0];
            lbl_Show.Text = dem.ToString() + " / " + dem.ToString();
        }

        #endregion

        #region Lây TT, kiểm tra
        NhanVien getTTNhanVien()
        {
            nv.MaNV = txt_MaNV.Text;
            nv.TenNV = txt_TenNV.Text;
            nv.ChucVu = txt_ChucVu.Text;
            nv.NgaySinh = date_Ngaysinh.Value;
            if (comb_GioiTinh.SelectedItem.ToString()== "Nam")
                nv.GioiTinh = 1;
            else
                nv.GioiTinh = 0;
            nv.DiaChi = txt_Diachi.Text;
            nv.Email = txt_Email.Text;
            nv.SoDT = txt_SoDT.Text;
            string img = txt_LinkAnh.Text.Substring(txt_LinkAnh.Text.LastIndexOf('\\') + 1);
            if (img != "")
                nv.AnhCaNhan = @"Images\Users\" + img;
            else
            {
                nv.AnhCaNhan = @"Images\Users\no-avatar.jpg";
            }
            nv.MatKhau = txt_MatKhau.Text;
            return nv;
        }
        bool checkSave(NhanVien nv)
        {
            if (nv.MatKhau.Length < 6)
            {
                MessageBox.Show("Mật khẩu phải >=6 kí tự ", "Thông báo");
                txt_MatKhau.Focus();
                return false;
            }

            if (nv.MaNV.Equals(""))
            {
                MessageBox.Show("Mã nhân viên không được để trống !", "Thông báo");
                txt_MaNV.Focus();
                return false;
            }
            if (nv.TenNV.Equals(""))
            {
                MessageBox.Show("Tên nhân viên không được để trống!", "Thông báo");
                txt_TenNV.Focus();
                return false;
            }
            if (nv.Email!="")
                if (uti.isValidEmail(txt_Email.Text) == false)
                {
                    MessageBox.Show("Email không hợp lệ", "Thông báo");
                    txt_Email.Focus();
                    return false;
                }
            if (nv.SoDT!="")
                if (uti.checkDigit(txt_SoDT.Text) == false || txt_SoDT.Text.Length > 15)
                {
                    MessageBox.Show("Số điện thoại không hợp lệ", "Thông báo");
                    txt_SoDT.Focus();
                    return false;
                }
         
            return true;
        }
        #endregion
        
        #region Load trạng thái
        void resetTextBox()
        {
            txt_MaNV.Text = "";
            txt_TenNV.Text = "";
            txt_ChucVu.Text = "";
            date_Ngaysinh.Value = System.DateTime.Now;
            comb_GioiTinh.SelectedIndex = 1;
            txt_Diachi.Text = "";
            txt_Email.Text = "";
            txt_SoDT.Text = "";
            txt_LinkAnh.Text = @"Images\Users\no-avatar.jpg";
            pic_AnhCaNhan.BackgroundImage = System.Drawing.Image.FromFile(txt_LinkAnh.Text, true);
            txt_MatKhau.Text = "";

        }
        void loadStatus(bool k)
        {
            txt_MaNV.ReadOnly = k;
            txt_TenNV.ReadOnly = k;
            txt_ChucVu.ReadOnly = k;
            date_Ngaysinh.Enabled = !k;
            comb_GioiTinh.Enabled = !k;
            txt_Diachi.ReadOnly = k;
            txt_Email.ReadOnly = k;
            txt_SoDT.ReadOnly = k;
            txt_LinkAnh.ReadOnly = k;
            txt_MatKhau.ReadOnly = k;
        }
        void loadButton(bool k)
        {
            btn_Luu.Enabled = k;
            btn_Huy.Enabled = k;
            dgv_NSD.Enabled = !k;
        }
        #endregion

        private void btn_CapQuyen_Click(object sender, EventArgs e)
        {
            Frm_PhanQuyen frm = new Frm_PhanQuyen();
            frm.ShowDialog();
        }

        private void dgv_NSD_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            uti.dgv_GetSTT_RowHeader(sender, e, dgv_NSD);
        }

        private void dgv_NSD_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                int dong = e.RowIndex;
                txt_MaNV.Text = dgv_NSD.Rows[dong].Cells["MaNV1"].Value.ToString();
                txt_TenNV.Text = dgv_NSD.Rows[dong].Cells["TenNV"].Value.ToString();
                txt_ChucVu.Text = dgv_NSD.Rows[dong].Cells["ChucVu"].Value.ToString();
                date_Ngaysinh.Value = Convert.ToDateTime(dgv_NSD.Rows[dong].Cells["NgaySinh"].Value);
                if (Convert.ToInt32(dgv_NSD.Rows[dong].Cells["GioiTinh"].Value) == 1)
                    comb_GioiTinh.SelectedItem = "Nam";
                else
                    comb_GioiTinh.SelectedItem = "Nữ";
                txt_Diachi.Text = dgv_NSD.Rows[dong].Cells["DiaChi"].Value.ToString();
                txt_Email.Text = dgv_NSD.Rows[dong].Cells["Email"].Value.ToString();
                txt_SoDT.Text = dgv_NSD.Rows[dong].Cells["SoDT"].Value.ToString();
                txt_LinkAnh.Text = dgv_NSD.Rows[dong].Cells["AnhCaNhan"].Value.ToString();
                pic_AnhCaNhan.BackgroundImage = System.Drawing.Image.FromFile(txt_LinkAnh.Text, true);
                txt_MatKhau.Text = dgv_NSD.Rows[dong].Cells["MatKhau"].Value.ToString();
                //
                int dem = dgv_NSD.Rows.Count - 1;
                lbl_Show.Text = (dong + 1).ToString() + " / " + dem.ToString();
            }
            catch
            { 
            
            }
        }

    }
}
